home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1991: Code Warrior / bincue / Code Warrior.bin / Tools & Apps (Moof!) / OS⁄Toolbox / HyperMenus / SetItem.c < prev    next >
Encoding:
Text File  |  1990-07-23  |  1.1 KB  |  69 lines  |  [TEXT/MPS ]

  1. //
  2. //        © Copyright 1990 Apple Computer, Inc.   By Ricardo Batista
  3. //
  4.  
  5. #include "Types.h"
  6. #include "Memory.h"
  7. #include "Menus.h"
  8. #include "Packages.h"
  9. #include "HyperXCMD.h"
  10.  
  11.  
  12. void GetHLong(Handle H, long *s);
  13. void GetHString(Handle H, char *s);
  14.  
  15. pascal void MAIN(XCmdPtr xcmd)
  16. {
  17.     char data[255];
  18.     long item;
  19.     long num;
  20.     
  21.     if (xcmd->paramCount != 3)
  22.         return;
  23.     GetHLong(xcmd->params[0], &num);
  24.     if (!num)
  25.         return;
  26.     GetHLong(xcmd->params[1], &item);
  27.     GetHString(xcmd->params[2], data);
  28.     SetItem((MenuHandle) num, (short) item, data);
  29. }
  30.  
  31.  
  32. void GetHLong(Handle H, long *s)
  33. {
  34.     short len;
  35.     char st[256];
  36.     
  37.     *s = 0L;
  38.     HLock(H);
  39.     len = (short) GetHandleSize(H);
  40.     if (len > 255)
  41.         len = 255;
  42.     BlockMove(*H, &st[1], (long) len);
  43.     HUnlock(H);
  44.     len = 1;
  45.     while (st[len])
  46.         len++;
  47.     st[0] = len - 1;
  48.     StringToNum(st, s);
  49. }
  50.  
  51.  
  52.  
  53. void GetHString(Handle H, char *s)
  54. {
  55.     short len;
  56.     char st[256];
  57.     
  58.     HLock(H);
  59.     len = (short) GetHandleSize(H);
  60.     if (len > 255)
  61.         len = 255;
  62.     BlockMove(*H, &st[1], (long) len);
  63.     HUnlock(H);
  64.     len = 1;
  65.     while (st[len])
  66.         len++;
  67.     st[0] = len - 1;
  68.     BlockMove(st, s, (long) len);
  69. }